package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import util.Conexion;
import bean.Color;

public class ColorDAO {
	
	public List<Color> listar() throws SQLException{
		List<Color> listado = new ArrayList<Color>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,color,buscar_color,orden,situacion " +
				"FROM tbl_Color");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Color color = new Color();
			color.setId(rs.getInt("id"));
			color.setColor(rs.getString("Color"));
			color.setBuscar_color(rs.getString("buscar_Color"));
			color.setOrden(rs.getInt("orden"));
			color.setSituacion(rs.getString("situacion"));
			listado.add(color);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<Color> buscarPorColor(String filtro,String situacion) throws SQLException{
		List<Color> listado = new ArrayList<Color>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT color,buscar_color,situacion,id,orden " +
				"FROM tbl_color WHERE situacion in ("+situacion+") and color like ?");
		pstm.setString(1, filtro + "%");	
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			Color color = new Color();
			color.setId(rs.getInt("id"));
			color.setColor(rs.getString("color"));
			color.setBuscar_color(rs.getString("buscar_color"));
			color.setSituacion(rs.getString("situacion"));
			color.setOrden(rs.getInt("orden"));
			listado.add(color);
		}
		rs.close();
		pstm.close();
		return listado;
	}
		
	public List<Color> buscarPorAlias(String filtro,String situacion) throws SQLException{
		List<Color> listado = new ArrayList<Color>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT color,buscar_color,situacion,id,orden " +
				"FROM tbl_color WHERE situacion in ("+situacion+") and buscar_color like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Color color = new Color();
			color.setId(rs.getInt("id"));
			color.setColor(rs.getString("color"));
			color.setBuscar_color(rs.getString("buscar_color"));
			color.setSituacion(rs.getString("situacion"));
			color.setOrden(rs.getInt("orden"));
			listado.add(color);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<Color> buscarPorAlias(String filtro) throws SQLException{
		List<Color> listado = new ArrayList<Color>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT color,buscar_color,situacion,id,orden " +
				"FROM tbl_color WHERE buscar_color = ?");
		pstm.setString(1, filtro);
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Color color = new Color();
			color.setId(rs.getInt("id"));
			color.setColor(rs.getString("color"));
			color.setBuscar_color(rs.getString("buscar_color"));
			color.setSituacion(rs.getString("situacion"));
			color.setOrden(rs.getInt("orden"));
			listado.add(color);
		}
		rs.close();
		pstm.close();
		return listado;
	}	
	
	public List<Color> buscarPorOrden(int filtro,String situacion) throws SQLException{
		List<Color> listado = new ArrayList<Color>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT color,buscar_color,situacion,id,orden " +
				"FROM tbl_color WHERE situacion in ("+situacion+") and orden=?");
		pstm.setInt(1, filtro);
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Color color = new Color();
			color.setId(rs.getInt("id"));
			color.setColor(rs.getString("color"));
			color.setBuscar_color(rs.getString("buscar_color"));
			color.setSituacion(rs.getString("situacion"));
			color.setOrden(rs.getInt("orden"));
			listado.add(color);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public int insertar(Color color) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"insert into tbl_color (color,buscar_color,orden,situacion,usuario_creacion,fecha_creacion) values (?,?,?,?,?,?)");
		pstm.setString(1, color.getColor());
		pstm.setString(2, color.getBuscar_color());
		pstm.setInt(3, color.getOrden());
		pstm.setString(4, color.getSituacion());
		pstm.setString(5, color.getUsuario_creacion());
		pstm.setInt(6, color.getFecha_creacion());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
	
	public int actualizar(Color color) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"update tbl_color set color = ?,buscar_color = ?,orden = ?,situacion = ?,usuario_modificacion = ?,fecha_modificacion = ? where id = ?");
		pstm.setString(1, color.getColor());
		pstm.setString(2, color.getBuscar_color());
		pstm.setInt(3, color.getOrden());
		pstm.setString(4, color.getSituacion());
		pstm.setString(5, color.getUsuario_modificacion());
		pstm.setInt(6, color.getFecha_modificacion());
		pstm.setInt(7, color.getId());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
}
